@Demoprogramm
KIWI TOOLS DEMO V 2.2
Herzlich Willkommen in Demoprogramm der KIWI TOOLS C V3.20
Sie befinden sich zur Zeit in der Hilfefunktion.
Wenn Sie starten möchten dann bitte Return, oder Maus auf OK

═══════════════════════════════════════════════════════════════
N E U H E I T E N   D E R   V E R S I O N   V 3.20
══════════════════════════════════════════════════════════════

Dieses ist ein Demonstrationsprogramm der KIWI TOOLS V3.20
Dieses Programm dient nur zur Verdeutlichung der Anwendungs-
möglichkeiten der KIWI C TOOLS V 3.20.

Was ist/sind KIWI C TOOLS V 3.20 ??

Die KIWI C TOOLS V 3.20 ist eine Sammlung von Funktionen
und Routinen für die Programmiersprache C.
Diese Funktionen umfassen den überwiegenden Teil der für
Benutzerführungen erforderlichen Leistung. Mit den hier
gebotenen Funktionen können Sie Programme nach dem 
SAA/CUA Standard in einem Bruchteil der üblichen Zeit erstellen.
Das Angebot der über 290 Funktionen teilt sich in insgesamt 14 Bereiche.

1. Bildschirm
   In dieser Katekorie finden Sie Funktionen zum Betrieb eines Bildschirms
   in Mono, Color, 25,43,50 Zeilen. Sie können Farben definieren, 

2. Window
   Windows nehmen unter SAA/CUA eine bedeutende Stellung ein. Deshalb ist 
   auch ein großer teil der Funktionen diesem Thema gewidmet. 
   Zur Verfügung stehen 3 Grundtypen von Windows, statische, dynamische und
   Slide Windows.
   Statische Windows sind nicht veränderbar und dienen zur Ausgabe von 
   Nachrichten oder ähnliches. Dynamische Windows benutzen einen 
   integrierten virtuellen Bildschirm, der in der Größe das Window übertrifft.
   Innerhalb des virtuellen Bildschirms können Sie den Windowinhalt
   beliebig jederzeit interaktiv verschieben, ermöglicht durch den 
   integrierten WindowManager, der Eventgesteuert ihre manipulationen
   erfaßt und steuert. Diese Windows sind beliebig am Bildschirm zu 
   verschieben, zu skalieren oder zu scrollen. Diese stellen den Haupttyp
   der Windows. Der letzte Typ, die Slide Windows stellen eine Spielart
   der dynamischen Windows dar. DerUnterschied ergibt sich aus der Tatsache,
   das die Slide Windows bei erreichen der virtuellen Screengrenzen nicht
   stoppen, sondern eine Benutzerfunktion aufrufen können, die den Window-
   inhalt kontrolliert. Auf diese Weise sind Funktionen wie File Browser o.ä.
   leicht zu realisieren.

   Der Zugriff auf die Windows erfolgt mittels Handles, die als 
   Aufrufparameter für die Ausgabefunktionen dienen.
   Zur schnellen Erstellung von Windows oder Eingabemasken steht ein
   Hilfsprogramm zu Verfügung, der ScreenManager. Dieses Programm unter-
   stützt die interaktive Erstellung von Windows und Masken enorm,
   ermöglicht die Benutzung von Prototypen in ihrer Applikation und
   erstellt den notwendigen Programmcode selbst. Eine Demoversion des
   ScreenManagers ist ebenfalls auf dieser Diskette enthalten.








3. Ausgabe

4. Tastatur

5. Eingabe und Editieren

6. Menüs und Dialog

7. On Line Hilfe

8. Drucker

9. Mausunterstützung

10. Datum und Zeit

11. Binärkompatible File I/O

12. Memory Shell

13. Procedure Table

14. Diverses





 





Diese neue Version bietet einige weitreichende Verbesserungen.

Die wohl wichtigste Neuerung ist die Benutzung von
virtuellen Bildschirmen, und damit die Einführung dynamischer
Windows. Diese dynamischen Windows können zu jeder Zeit durch
den integrierten Windowmanager manipuliert werden. Somit kann
der Benutzer seine Bildschirmoberfläche selbst auf einfachste
Weise gestalten. Er kann Windows verschieben, scrollen, Zoomen
Maximal/Minimal Größe setzen, Windows in den Vordergrund setzen.
Damit ist eine weitere Bedingung des SAA/CUA Konzepts voll erfüllt,
die Möglichkeit Windows zu jeder Zeit interaktiv zu manipulieren.
Probieren Sie die Möglichkeiten selbst aus, Funktion Windows/Dynamisch.

Die nächste wesentliche Erleichterung bei der Programmentwicklung
stellt der Screenmanager dar. Dieses Programm ermöglicht die
Erstellung von Dialogfenstern oder dynamischen Windows interaktiv.
Dadurch wird die Entwicklungszeit von Oberflächenmasken wesentlich
erhöht. Der Zugriff auf die Masken erfolgt durch Funktionen,
ähnlich der Standardfunktion printf und scanf, die die Ausgabe
oder Eingabe mehrerer Daten in einem Aufruf ermöglichen.
Durch Angabe der Feldparameter während der Felddefinition kann der
Ablauf des Aus- Eingabeprozesses bereits in einem frühen Stadium fest-
gelegt werden. Die Vereinbarungen betreffen den Datentyp, die Länge,
die Ausrichtung, Min,Max-Werte, Eingabe, Überprüfungsroutinen usw.
Die Voreinstellungen können jederzeit durch Formatangabe bei dem
jeweiligen Funktionsaufruf überschrieben werden, so daß eine Größt-
mögliche Flexibilität bei der Behandlung von Bildschirmmasken jederzeit
gewährleistet ist. Der Screenmanager ist natürlich mit den
KIWI C TOOLS V 3.20 erstellt worden, und verfügt somit ebenfalls über alle
hier beschriebenen Vorteile. Sie können Sich davon mittels der Demoversion
selbst überzeugen. Gemäß unserer Philosophie ist der Screenmanager
natürlich ebenfalls im Source Code erhältlich.

Die dritte Erweiterung dient der Vermeidung der meisten Absturzursachen,
der Speicherverwaltung auf dem Heap oder Far Heap. Die Version V 3.20
verfügt nun über eine Memory Shell, die die Standardaufrufe umleitet,
und so ohne Änderungen im bestehenden Source eingebaut werden kann.
Diese Shell ermöglicht die Kontrolle über erfolgte Speichermanipulationen,
und meldet eventuell auftretende Fehler sofort. Außerdem kann zu jeder
Zeit der benutzte Speicherbedarf festgestellt werden, sowie eine
Protokollausgabe über die erfolgten Aufrufe, mit Angabe in welcher
Datei und in welcher Zeile.
Die Benutzung dieser Shell ist sehr zu empfehlen, da dadurch Speicherfehler
sehr früh, bereits in der Entwicklung entdeckt werden können. Jeder der
bereits mit derartigen Fehlern konfrontiert worden ist, wird die
Memory Shell zu würdigen wissen.

Eine weitere wichtige Neuerung ist die Einführung der Procedure Table.
In dieser Tabelle können beliebig viele Funktion eingetragen werden, und
zu einem späteren Zeitpunkt durch eine gesetzte Tastenkombination oder 
durch einen gesetzten Identifikationsstring ausgeführt oder übergeben werden.
Dadurch wird eine weitreichende Flexibiliät in der Programmablauflogik
erreicht, ohne einen aufblähenden Overhead zu erzeugen. Dieses Verfahren
ist innerhalb der Funktion scanf_mask bereits implementiert, um eine
Überprüfung der Eingabe zu erreichen. Benutzen Sie Edit Datensatz. 


Ein weiteres wichtiges Bedienelement sind Buttons oder Schalter.
Diese können beliebig innerhalb eines Windows plaziert werden, wobei
die komplette Handhabung durch 7 Funktionen ermöglicht wird.
benutzen Sie die Festlegungen Farbe und Form und die Option Diverses
und Reaktionstest um die Möglichkeiten der Buttons zu prüfen.

Die Funktionen array_get_files und browse_get_files ermöglichen nun
die Erfassung von Verzeichnissen und Laufwerken. Dadurch kann bei der
Auswahl einer Datei, der komplette Verzeichnisbaum durchsucht werden,
ohne die Funktion zu verlassen. 
 
Die Einführung von Slidern ermöglicht nun die visuelle Darstellung
von Abläufen, die eine gewisse Zeit in Anspruch nehmen.


Als letztes ist die Überarbeitung der bereits bestehenden Bereiche
zu erwähnen, die durch Anregungen, Fehler oder Umständlichkeiten
im täglichen Gebrauch notwendig wurden.

Wählen Sie die Option INDEX um eine Übersicht über alle
angebotenen Funktionen zu erhalten.

══════════════════════════════════════════════════════════════

Dieses Programm soll die vielfältigen Möglichkeiten dieser Tool Box
für die Programmiersprache C darstellen.
Dafür sind verschiedene "Aufgaben" zusammengepackt
worden. Diese einzelnen Möglichkeiten sind
ausgearbeitet worden, um die Arbeitsweise der
entsprechenden Funktion zu demonstrieren. Ob die
Funktion in der hier vorliegenden Form sinnvoll oder
nicht ist, war nicht Gegenstand der Aufgabe.

═══════════════════════════════════════════════════════════════

Am oberen Rand sehen Sie die Menüzeile. Um dort eine
Wahl zu treffen, bewegen Sie den Mauszeiger auf einen
Begriff und betätigen Sie die linke Taste. Haben Sie keine
Maus, betätigen Sie den hervorgehobenen Buchstaben zusammen
mit der Alt Taste. Daraufhin springt ein Untermenü auf,
in dem Sie weitere Auswahlmöglichkeiten vorfinden.
Was Sie zur Zeit sehen ist die Hilfefunktion, die bei
Programmstart automatisch initialisiert und aufgerufen wird.
Betätigen Sie an irgendeiner Stelle die Funktionstaste F1, so
wird versucht einen zu der jeweiligen Programmstelle passenden
Hilfetext einzublenden. Wenn Ihnen dieser Text nicht weiterhilft,
so wählen Sie Mehr Info, und Sie können aus allen verfügbaren
Hilfetexten wählen. Finden Sie kein passenden Eintrag, versuchen
Sie ein Stichwort einzutippen. Dabei wird nicht zwischen Groß und
Kleinschreibung unterschieden. Wenn irgendwas zu diesem Stichwort
passt bekommen Sie den zugehörigen Hilfetext eingeblendet.
Falls Ihnen die Hilfetexte nicht gefallen können Sie sie jederzeit
nach Ihren Geschmack ändern. Bei erneutem Start wird die
Hilfedatei untersucht und bei Bedarf der zugehörige Index neu
erstellt.

@ProgrammInfo

    KIWI SOFT Dipl. Ing. Joachim Friedrich
Heinrichsglück     5908 Neunkirchen / Siegerland
	    Telefon 02735/61248
      
     Demo Programm V 2.20  24.03.1992


@Hilfetaste
Diese Case Sensitiv Online Hilfe wird über eine
bestimmte Tastenkombination ausgelöst. Diese
Tastenkombination ist auf F1 festgelegt. Sie können
diese Tastenkombination jederzeit ändern. Dazu wählen
Sie das Menü Option Hilfetaste an. Dann tippen Sie die
Tastenkombination, die die Hilfe auslösen soll. Dabei
können Sie beliebige Kombination
von Alt, Ctrl, Funktionstasten oder sonstigen Tasten
wählen. Ausgeschlossen sind spezielle Kombination, wie
Alt + F1 oder Alt + Cursortasten. Diese Kombination
lösen auf Betriebssystemebene bestimmte
Funktionen aus und sind daher als
Hilfetastenkombinationen nicht zugelassen.

@Dynamische Fenster
Dynamische Fenster und virtuelle Screen sind ab der Version V 3.1
verfügbar und erhöhen die flexibilität des gesamten System ernorm.
Virtuelle Screens sind Bildschirme, die nur im Speicher existieren, und
die durch Fenster am realen Bildschirm sichtbar werden. Die Anzahl
und Größe der virtuellen Screens werdn nur durch den verfügbaren Speicher
begrenzt. Ein virtueller Bildschirm kann maximal 64 KB Speicher benutzen,
das sind 32000 Zeichen oder 132x240 Zeichen. 

Ein virtueller Bildschirm kommuniziert mit einem normalen Bildschirmfenster, 
durch das der Inhalt des Bildschirm sichtbar werden kann. Es können auch 
beliebig viele Fenster an ein virtuellen Bildschirm gelinkt werden, 
um verschiedene Teile gleichzeitig sichtbar zu halten. Wenn ein Fenster 
an einen virtuellen Bildschirm gelinkt wird, gehen alle Ausgaben, die auf 
das Fenster gerichtet werden, automatisch auf den virtuellen Bildschirm. 
Die Größe des Fensters kann dabei beliebig innerhalb der Größe des 
Bildschirm verändert werden. Diese Änderung kann durch einen integrierten 
Windowmanager erfolgen. Dieser Windowmanager ermöglich gleichzeitig die 
Manipulation aller dynamischen Fenster am Bildschirm. 

Dazu besitzt jedes dynamische Fenster verschiedene Manipulatorpunkte. 
Pickt man ein Fenster an einer Kante kann die Größe verändert werden. 
Pickt man ein Fenster am Rand wird es in den Vordergrund geholt. 
Der linke obere Punkt dient zur Verschiebung des Fensters am Bildschirm.
Der rechte obere bewirkt bei betätigung der linken Maustaste eine
Vergrößerung bis maximale Größe, bei Betätigung der rechten Taste eine
Verkleinerung bis minimal. Die Pfeile dienen zur Verschiebung des 
Bildschirminhalts hinter dem Fenster, wobei durch die Scrolbalken rechts
und unten, die Position des Fensters innerhalb des virtellen Bildschirms
angezeigt wird. 
Haben Sie keine Maus, können Sie durch Eingabe von ALT+CTRL+W in den
Windowmanger wechseln. Das aktive Window verliert seinen Schatten.
Ist das aktive Window nicht das gewünschte, so können Sie mit N
unter den dynamischen Windows hin und herspringen.
Mit den Cursortasten können Sie nun die Position ändern, mit den
Cursortasten und der linken Shifttaste wird das Fenster vergrössert,
mit der rechten Shifttaste verkleinert. Durch E wird es maximiert, 
durch M minimiert, und durch U,D,R,L kann der Inhalt gescrollt werden.
Dabei gilt U=Up,D=Down,R=Rechts,L=Links. Durch jede andere Taste wird
der Windowmanager wieder verlassen.

@Fensterbeschreiben
Diese Funktion erstellt möglichst viele
Bildschirmfenster um diese danach mit einem Text zu
beschreiben. Dabei wird demonstriert, wie auch
teilweise oder ganz verdeckte Fenster beschrieben
werden können. Da bei der Erstellung der Fenster die
Farbe gewechselt wurde, erscheint nun jeder
Schriftzug eines Fensters in der Fensterfarbe.

@Dateierfassung Array
Diese Funktion dient dazu eine Datei interaktiv
auszuwählen. Dazu wird der Dateipfad eingegeben und
durch die Funktion array_get_files werden die Dateien
unter diesem Pfad erfasst und in einem
Bildschirmfenster nebeneinander in einem Feld
angezeigt. Der Benutzer kann nun bequem die gewünschte
Datei mittels Maus oder Cursortasten auswählen. Nach
der Auswahl wird der Inhalt der Datei in einem
Fenster ausgegeben.

@Dateierfassung Browse
Diese Funktion dient dazu eine Datei interaktiv
auszuwählen. Dazu wird der Dateipfad eingegeben und
durch die Funktion browse_get_files werden die
Dateien unter diesen Pfad erfasst und in einem
Bildschirmfenster untereinander angezeigt. Der
Benutzer kann nun bequem die gewünschte Datei mittels
Maus oder Cursortasten auswählen Nach der Auswahl
wird der Inhald der Datei in einem Fenster
ausgegeben.

@Fenster Farbe
Diese Funktion färbt das angezeige Bildschirmfenster
nacheinander in alle verfügbaren Bildschirmfarben.
Diese sind in der Funktion init_tools zuvor
festgelegt worden. Zum Einfärben wird die Funktion
set_window_attribut verwendet.

@Fenster verfügbar
Dieser Punkt demonstriert zwei Eigenschaften der
Tools. Erstens die Funktion choose_button, bei der
verschiedene Optionspunkte aktiviert oder
desaktiviert werden können. Dieses erfolgt durch
Anklicken der Zeile, oder durch Return oder durch den
jeweiligen Schlüsselbuchstaben. Die zweite Funktion
ist der Aktivitätsmodus von Menüpunkten. Alle
abgeschalteten Menüpunkte werden bei dem nächsten
Aufruf nicht mehr dargestellt, und können auch nicht
mehr angewählt werden. Damit ist eine Bedarfsabhängige
Menügestaltung, die von dem jeweiligen Programmmodus
oder eventuellen Zugriffsrechten abhängig sein kann,
möglich.

@Dateiverschlüsseln
Die Dateiverschlüsselung ermöglicht die Sicherung von 
Daten in einer Datei, die nicht mehr lesbar ist, und nur 
unter größten Schwierigkeiten, wenn überhaupt zu knacken 
ist. Der Grad der Sicherheit hängt von der Länge und 
Komplexität des Schlüssels ab. Zur Entschlüsselung wird
der gleiche Schlüssel wie zur Verschlüsselung benutzt.

@Dateientschlüsseln
Die Dateientschlüsselung ist der Umkehrprozeß den 
Dateiverschlüsselung. Dazu muß der zur Verschlüsselung 
benutzte Schlüssel einegeben werden. Ist dieser Schlüssel 
richtig, wird die Datei in ihrer Originalform wieder 
hergestellt. Ist der Schlüssel falsch entsteht Unsinn.

@Editor
Der verfügbare Zeileneditor hat einige Besonderheiten. 
Er ist in seinem Verhalten veränderbar, so daß er 
sowohl für einzelne Zeilen als auch für Textpassagen 
benutzbar ist. weiter verfügt er über einen internen 
Buffer, in den mit Alt+S die aktuelle Zeile kopiert 
werden kann. Mit Alt+I kann der Bufferinhalt wieder 
in die aktuelle Zeile kopiert werden. Der Cursor ist 
je nach geschaltetem Einfügemodus entweder klein oder
aber als Blockcursor gesetzt. Er kann mit den 
Cursortasten beliebig bewegt werden. Die Taste Tab(Links) 
verschiebt den Cursor um 10 zeilen nach links. Tab (Links) 
mit Shifttaste verschiebt ihn 10 Zeichen nach rechts.
Die Taste Alt+D oder PgUp löscht die gesamte Zeile.
Die Taste Alt+R oder PgDn löscht den Rest der Zeile 
ab Cursorposition. Die Taste Alt+U stellt die Eingabezeile 
wieder in den Ursprungszustand her. Die Taste Tab (Rechts) 
löscht das Zeichen links des Cursor und verschiebt diesen
um eine Stelle nach links. Die Taste DEL löscht das Zeichen 
rechts vom Cursor und schiebt den Rest der Zeile nach links.

@Datensatz Eingabe
Die Eingabe eines kompletten Datensatzes demonstriert 
den Einsatz der Eingabe und Editierfunktionen im 
Zusammenspiel. Dabei ist es möglich den Cursor beliebig 
innerhalb der Eingabemaske zu frei zu bewegen
und die Eingaben in beliebiger Reihenfolge zu tätigen.
Bei diesem Beispiel werden alle Eingabefunktion benutzt.

@Text Eingabe
Bei dieser Funktion ist der Editor im Feldmodus. Dabei 
ermöglicht er die freie Editierung eines Textfeldes. 
Bei Erreichen des Zeilenendes springt der Cursor automatisch 
in die nächste Zeile, ebenso bei RETURN. Die Cursortasten 
HOCH/RUNTER wechseln ebenfalls die Zeile, wobei aber
die Spalte beibehalten wird. Diese Funktion wird mit
Escape oder mit Erreichen der letzten Textposition beendet.
Bitte beachten Sie, das bei Verwendung von dynamischen Fenstern,
der Cursor automatisch in dem sichtbaren Bereich gehalten wird.
Das hat zur Folge, das bei Überschreitung der Fenstergrenzen,
der Inhalt automatisch gescrollt wird.
Außerdem wird der Editor Zeilenweise abwechslend in den
NUR GROß oder nur klein Modus geschaltet.

@Passwort Eingabe
Diese Funktion ermöglich die Eingabe eines Passworts. 
Dabei wird das Eingabefenster durch ein zweites Fenster 
überlagert, so das die Eingabe nicht sichtbar ist. Der 
Editor ist im Zeilenmodus aber der Cursor ist ausgeschaltet,
so daß die jeweilige Eingabeposition nicht erkennbar ist.

@Uhr
Diese Funktion demonstriert die Möglichkeiten der 
Zeitfunktionen. Dabei wird die Systemuhr des Rechners 
benutzt um die Zeit zu erfassen und anschließend auszugeben.

@Bildschirmmodus
Diese Funktion schaltet den Bildschirm in einen anderen 
Modus. Wenn Sie eine Farbgrafigkarte besitzen können
Sie diese Möglichkeit nutzen. Da die Nummern der Modi 
für verschiedene Bildschirmadapter unterschiedlich sind 
können sie die Nummer manuell eingeben. Vorgegeben ist 
dabei die Nummer 38 für 80x60 Darstellung für eine 
VGA Karte Optima. Schauen Sie bitte in ihr Manual der 
Karte nach der richtigen Nummer und tragen Sie diese ein.
Sie dürfen keinen grafischen Bildschirmmodus anwählen, 
da Grafikmodus (noch) nicht unterstützt wird. Wenn die 
Umschaltung nicht klappt können Sie den Bildschirm wieder 
in den normalen Bildschirmmodus bringen.
Modus 3 ist der normale 80x25 Zeichen bei 16 Farben Modus.
Modus 7 ist der Monochrom 80x25 Modus.

@Ausgabemodus
Der Ausgabemodus beschreibt die Art des Bildschirmzugriffs. 
Bei MS-DOS ist es möglich, die Ausgabe direkt in den 
Bildschirmspeicher zu schreiben, oder Funktionen zu benutzen, 
die das BIOS bereitstellt. Der direkt Weg ist die schnellste 
Möglichkeit, Daten auf dem Bildschirm zu bringen und 
ermöglich ansprechende Effekte. Dieser Weg hat aber den 
Nachteil, das er nicht unbedingt auf allen Maschinen 
reibungslos funktioniert. Die Benutzung des BIOS ist bei 
langsameren Rechnern unter Umständen recht hinderlich, bietet 
aber dafür die Gewähr unter nahezu allen Bedingungen zu 
funktionieren. Die KYIWI TOOLS bieten beide Wege an.

@Fensterschatten
Die Kiwi Tools bieten die Möglichkeit, Fenster mit einem
Schatten zu versehen. Dieses hat zur Folge, das ein 
räumlicher Effekt auftritt, der die Überlagerung der 
einzelnen Fenster hervorhebt. Der Schatten ist so aufgebaut, 
das die Beleuchtungsquelle links oberhalb des Fensters sitzen 
würde. Dieser Schatten kann jederzeit für alle Fenster oder
individuell für ein Fenster aufgebaut oder abgeschaltet werden.

@Maus Speed
Diese Funktion demonstriert die Benutzung der Funktion 
roll_bar, indem die Geschwindigkeit der Maus in dem Bereich 
von 0 bis 100 angegeben wird. Dieser Wert hat in diesem Fall 
keinen Einfluß auf die Maus, und dient nur
als Beispiel für eine Anwendung.

@Maus
In allen Funktion der KIWI TOOLS ist die Benutzung der Maus
vorgesehen. Die Maus fragt einen installierten Maustreiber
über den Interrupt 0x33 ab. Dieser Interrupt ist der Mausinterrupt
und es sollten normalerweise keine Probleme auftauchen.
Die Mausfunktionen sind mit einer Genius, Microsoft und Witty Maus
getestet worden, ohne das Probleme auftauchten.
Die Anwendung einer Maus erleichtert die Benutzung der Menüs und
sonstigen interaktiven Funktionen sehr, und sollte deshalb stets
mit in Programme einbezogen werden.
Falls keine Maus zur Verfügung steht, oder keine Mausbenutzung
gewünscht wird, müssen alle Funktion auch ohne Maus verfügbar sein.
Aus diesem Grund kann die Maus mit dieser Funktion abgeschaltet werden.

@Menüs nach Maus
Die Dialogfunktion choose_menu, dialog, roll_bar usw, werden mit
festen Positionsangaben aufgerufen. Es kann aber auch ein Modus
gewählt werden, bei dem diese Position nicht benutzt werden und
stattdessen, die Position des Mauszeiger übernommen wird.
Diese erspart unter Umständen lange Fahrwege mit der Maus, und
lockert den Bildschirmeindruck etwas auf.

@Menüsmodus
Pull Down Menü
Bei Pull Down Menüs wird die gewünschte Funktion der Hauptleiste
angefahren und die linke Maustaste betätigt. Darufhin springt das
zugehörige Untermenü auf. Es kann dann mit weiter gedrückter Taste
das Untermenü ausgewählt werden, indem an der gewünschten Position
die Maustaste gelöst wird.

Pop Up Menüs
Bei Pop Up Menüs springt das Untermenü bereits auf, wenn nur die
Hauptleistenposition mit dem Mauszeiger angefahren wird.
Dann kann die Unterposition ausgewählt und mit betätigen der
linken Maustaste wird diese Aktiviert.

Doppelklick Menüs
Bei Doppelklickmenüs wird die Hauptleiste angefahren und mit
Betätigung der linken Maustaste das Untermenü aktiviert. Dann
muß die Taste gelöst werden. Daraufhin springt das Untermenü auf
und es kann die gewünschte Funktion angewählt werden indem
wiederrum die linke Maustaste betätigt wird.

@Druckausgaben
Sämtliche Druckausgaben der KIWI TOOLS gehen nicht direkt auf
einen Druckeranschluß, sondern auf einen Stream. Im Normalfall
ist dieser Stream mit dem Standarddrucker verbunden, es kann
aber auch eine Datei angeschlossenen sein. In diesem Fall
wird die gesamte Druckausgabe auf eine Datei umgeleitet.
Eine weitere Möglichkeit besteht darin, den Ausgabekanal
mit einem zweiten Stream zu verbinden, um die Ausgabe simultan
auf einem, oder zwei Druckern, oder auf einem Drucker und einer
Datei auszugeben, um z.B. die Druckausgabe zu protokollieren.
Um die Ausgabe zu formatieren werden die Steuerzeichen, die
notwendig sind um den Drucker anzusteuern, aus einer Datei
entnommen. Die Datei PRINTER.KSP ist eine ASCII Datei und besteht
jeweils aus einem Schüsselwort und den zugehörigen Steuercodes.
Die hier vorliegende Datei ist für einen NEC P6/P7 Drucker
abgestimmt. Benutzen Sie einen anderen Drucker, oder ergeben
sich Probleme bei der Ausgabe können Sie die für ihren Drucker
passenden Steuercodes in dieser Datei anstelle der alten Werte
eintragen. Die Werte sind dezimal einzutragen.

@Druckausgabeattribut
Das Druckausgabeattribut besteht das Aussehen der Druckausgabe.
Sie können wählen zwischen den angebotenen Feldern.

@Dateierfassung Drucken
Sie können an dieser Stelle eine Datei auswählen, die im Anschluß
auf den Druckausgabekanal geleitet wird. Dabei kann dieser Kanal
mit einem Drucker oder einer Datei oder beidem angeschlossenen
sein. Bevor Sie Drucken, wählen Sie bitte ihre Druckparameter aus
den angebotenen Position Attribut, Lage, Breite, Schrift.

@Drucker Initialisieren
Diese Option setzt den Drucker auf die Standardwerte, und schließt
eventuelle Ausgabedateien, die mit der Druckausgabe verbunden sind.
Nach diesem Aufruf erfolgt eine Druckausgabe nur noch auf dem
Drucker, bis Sie eine Datei als Ausgabe angewählt haben.

@Bildschirmrand
Diese Funktion färbt den Bildschirmrand in einer beliebigen
Farbe. Der Bildschirmrand (Overscan) ist der Bereich, der
nicht beschrieben werden kann und normalerweise schwarz bleibt.

@Speicherbedarf
Diese Funktion zeigt den momentan verfügbaren Speicherplatz
im aktuellen Datensegment. In diesem Fall ist das Programm
ein Medium Memory Modell, das heißt 1 Datensegment mit max 64 KB
und mehrere Textsegmente mit über 64 KB. Da die gesamte Bildschirm-
verwaltung in den Far Heap verlagert wird, ist der verfügbare
Datenbereich auch in Small und Medium Modellen normalerweise
ausreichend, so daß nur in Sonderfällen auf Large Modelle
ausgewichen werden muß. In diesem Demoprogramm sind fast alle
Funktionen der KIWI TOOLS eingebunden, so das der von den
TOOLS verbrauchte Speicherplatz überschaubar wird.

@Dateierfassung Löschen
Sie können eine Datei erfassen, die danach gelöscht wird.
Diese Datei ist nicht nur im Verzeichnis gelöscht, sondern
auch physikalisch gelöscht, so das es keine Möglichkeit
gibt, den Dateiinhalt wieder zurück zu holen.
Überlegen Sie sich also den Schritt genau.

@File I/O
Die Funktionen zu dem FILE I/O ermöglichen den hardware-
unabhängigen Datenaustausch von Hauptspeicher und Datei.
Bei unformatierter Schreibweise binärer Daten auf Datei
ist es unter Umständen nicht möglich, diese Daten auf
verschiedenen Hardwarekomponenten zu lesen. Ausgelöst
durch die unterschiedliche Interpretation der
Low and High Order Bytes eines Worts der verschiedenen
Prozessoren kann es zu inkompatibilitäten kommen.
Die hier eingesetzten Funktion lösen dieses Problem, da
hier die Daten bevor Sie auf die Datei, bzw
in  den Haupspeicher geschrieben werden in ein neutrales
Format konvertiert werden. Dieses erfolgt durch Shiftoperationen,
da diese bei allen Rechnern in die gleiche Richtung erfolgen.
Konsequenz ist allerdings, das die Daten mit den gleichen
Funktionen geschrieben und gelesen werden müssen, wobei
das erzeugte Format zwischen fget,bzw fput und fget_conv
und fputconv identisch ist.

@Menüleistenposition
Sie können die Zeile, in der das Hauptmenü erscheint frei wählen.
Diese Zeile kann die oberste oder die unterste verfügbare
Bildschirmzeile, oder jede dazwischen sein. Die Funktionsweise
der Menüs wird von der Position in keiner Weise beeinträchtigt. Wenn
Sie die Menüleiste in die unterste Zeile setzen, haben Sie keine
Pop- Down Menüs, sondern Pop Hoch Menüs.

@Memory Shell
Die Version 3.1 ist mit einer Memory Shell ausgestattet, die es
erlaubt Speicherbehandlungsfehler, die oft sehr hinterhältig sind,
zu entdecken. Geben Sie auf Anforderung eine Menge Bytes an, die
dynamisch von Heap entnommen werden soll. Dieser Bereich wird
nicht wieder befreit, so das bei Verlassen des Programms die
Memory Shell ein Speicherprotokoll ausgeben wird.

@Dateierfassungsmaske
Die Dateierfassung in dieser Maske ist nur mit den Möglichkeiten
der Maskenerfassungsroutine scanf_mask und 4 hinterlegten 
Pre-funktionen realisiert. Die Listen sind als Listenfelder 
deklariert und die Buttons sind als Buttons deklariert.
Geben Sie jeweils den Pfad an und wählen sie die geünschte Datei in
den beiden Listenfeldern. Ein Druck auf den jeweiligen Knopf lädt
dann die gewünschte Datei und zeigt den Inhalt per Funktion
browse_file. Der Quellcode findet sich in der Datei filelist.c

@Radiobuttons
Radiobuttons sind eine spezielle Art der Dateneingabe nach SAA.
Dabei haben Sie die Auswahl zwischen beliebig vielen Möglichkeiten
eines Feldes, wobei allerdings immer nur eine Möglichkeit aktiv sein
kann. Wie bei einem Radio, bei dem ebenfalls immer nur eine 
Stationstaste angewählt sein kann. Die Radiobuttons werden zum Groß-
teil in der Maske realisiert. Dort werden die Texte, die Anzahl und die
Position angegeben. Scanf_mask liefert dann die laufende Nummer des
aktiven Schalters im Feld in einer Variable Namens RADIO. In diesem
Fall wird diese Möglichkeit zur Bestimmung einer Fensterfarbe benutzt.
Die Eingaben oben und unten dienen nur zur Verdeutlichung der Einbindung
der Radiobuttons in eine normale Maske.

@Farbtabellen
In dem Menüpunkt Farbtabellen, können Sie die normale und inverse
Schriftdarstellung aus den dargestellten Farbkombinationen auswählen.
Es sind 5 sogenannte Farbpaletten vorhanden, die den Bildschirmaufbau
in den verschiedenen Programmebenen unterschiedlich farblich gestalten
lassen.

@Hintergrundzeichen
Sie können den Bildschirmhintergruns aus einer Liste mit verschiedenen 
Mustern frei wählen. Setzen Sie die Einstellung Ihrer Wahl, und starten
Sie das Programm neu, da diese Option erst beim nächsten Start aktiv ist.

@SAA Manipulation
Sie können das Aussehen der Scrollbars frei wählen, Dazu haben Sie
zwei verschiedene Modi zur Verfügung. Testen Sie beide uns entscheiden
Sie sich für den Modus Ihrer Wahl.

@Druckausgabegerät
Wählen Sie das gewünschte druckausgabegerät aus der Liste.

@Buttontext
Wählen Sie den Text, der als Buttonknopftext in der Maske erscheinen soll.
Wollen Sie z.B. eine Knopf als Hilfe, geben Sie als Buttontext HILFE ein. 

Wenn Sie mehrere Knöpfe innerhalb einer Maske verwenden, können Sie die
unterschiedlichen Längen der einzelnen Knopftexte mit Leerzeichen 
ausgleichen. 

@Tastencode
Jeder Buttonknopf kann eine Tastenkombination erzeugen. An diese Stelle
können Sie den Tastencode eingeben, der bei Auslösen des Buttons erzeugt 
werden soll. Benutzen Sie Sondertasten, können Sie nach betätigen der 
F2 Taste die Tastenkombination eintippen, die erzeugt werden soll, anstatt
die Tastenkombination als Zahl einzugeben.

@Buttonfunktion
Jeder Button kann eine Funktion ausführen. Die Funktion muß in der
Procedure Table hinterlegt sein. Die Konventionen gelten genauso wie
für Pre- oder Postfunktionen bei normalen Eingabefeldern.

@Anzahl Schalter
Geben Sie an diese Stelle die Anzahl der Schalter dieses Radiobuttonfeldes ein.
Die Anzahl ist die Menge aller möglichen Schalter. 

@Anzahl pro Reihe
Sie können die Radiobuttons auch mehrreihig anordnen. Wenn Sie das wollen,
geben Sie bitte die maximale Anzahl Schalter in einer Reihe ein. Bei mehreren
Reihen muß diese Anzahl kleiner als die Gesamtanzahl Schalter sein.

@Vertikalabstand
Sie können die Schalter direkt untereinander anordnen, oder mit einer oder
mehreren Reihen Abstand. Geben Sie hier bitte die Anzahl der Leerreihen ein.
Wenn keine Abständer erwünscht sind geben Sie bitte 0 ein.

@Horizontalabstand
Wenn Ihre Anordnung mehrreihig sein sollte müssen Sie die Anzahl der Spalten,
die zwischen den einzelnen Eingabereihen bestehen hier eingeben. Eventuell 
müssen Sie diese Zählen.

@KeyChar
Wählen Sie den Buchstaben, der als HotKey den Button aktiviert. 
0 ist der erste Buchstabe, 1 der zweite Buchstabe des Wortes usw.
Achten Sie darauf, keine Buchstaben doppelt zu vergeben, da es sonst
zu Überlagerungen kommen kann.

@Schalterform
Sie haben die möglichkeit, die Schalterform frei zu bestimmen. Zur 
Verfügung stehen drei verschiedene Formen. Die KIWI Soft Form besteht aus
einem Rechteckigen Kasten mit Rand, die Borland (TM) Form besteht aus einer
einzigen Zeile, die Microsoft (TM) Form besteht aus einer Zeile mit Text
in Klammern. Wählen Sie die gewünschte Bauform aus, indem Sie die gewünschte
Zeile aktivieren. Die Änderung tritt sofort nach Abspeichern in Kraft.

@Schalterschatten
Die Schalter können mit einem Schatten versehen werden, so das diese einen
3 dimensionalen Character erhalten. Dadurch wird das Erscheinungsbild insgesamt
verbessert. Beim Betätigen eines Schalters wird dann der Eindruck der Bewegung 
erzeugt. Wollen Sie diesen Effekt nicht, schalten Sie ihn einfach ab.

@Schalterklicken
Sie können beim Betätigen und beim Lösen eines Schalters einen Ton erzeugen
lassen. Frequenz und Zeitdauer können Sie jeweils bestimmen. Wollen Sie 
keinen Ton erzeugen, schalten Sie die Option ab. Die Angaben über Frequenz
und Zeitdauer werden dann ignoriert. Wenn die Option <Mit warnton> 
abgeschaltet ist, wird ebenfalls kein Ton erzeugt.

@Einschaltfrequenz
Dieser Wert bestimmt die Frequenz des Einschaltklicks eines Schalters. 
Zusammen mit der Zeitdauer können Sie so die Charakteristik dieses Tons
individuell gestalten. Die Werte sollten zwischen 50 und 400 Hertz liegen.

@Einschaltdauer
Dieser Wert bestimmt die Dauer des Einschaltklicks eines Schalters.
Zusammen mit der Zeitdauer können Sie so die Charakteristik dieses Tons
individuell gestalten. Die Werte sollten zwischen 2 und 10 Hunderstel 
Sekunden liegen. Längere Werte führen zu einer nervenden Geräuschkulisse.

@Ausschaltfrequenz
Dieser Wert bestimmt die Frequenz des Ausschaltklicks eines Schalters. 
Zusammen mit der Zeitdauer können Sie so die Charakteristik dieses Tons
individuell gestalten. Die Werte sollten zwischen 50 und 400 Hertz liegen.

@Ausschaltdauer
Dieser Wert bestimmt die Dauer des Ausschaltklicks eines Schalters.
Zusammen mit der Zeitdauer können Sie so die Charakteristik dieses Tons
individuell gestalten. Die Werte sollten zwischen 2 und 10 Hunderstel 
Sekunden liegen. Längere Werte führen zu einer nervenden Geräuschkulisse.

@Bildschirmgröße
Sie können den Screenmanager in jedem verfügbaren Textmodus 
benutzen, um z.B. große Fenster in 132x88 Darstellung bearbeiten 
zu können. Setzen Sie den gewünschten Bildschirmmodus fest, und der
Bildschirm wird wenn möglich in diesem Modus versetzt. Ein Umschalten von
Farb- nach Schwarz-Weiß Darstellungen und umgekehrt ist nur nach Neustart
des Programms möglich. Bei Neustart des Programms schaltet der Screenmanager
automatisch in diesen Bildschirmodus. 

@Bildschirmzugriff
Normalerweise erfolgen alle Ausgaben des Programms auf den Bildschirm 
im direkten Zugriff. Das bedeutet den schnellstmöglichen Bildschirmaufbau.
Es können aber bei bestimmten Rechnern dabei Probleme auftreten, die Sie
durch Umschaltung auf den BIOS Mode umgehen können. Der Bildschirmaufbau
wird dadurch wesentlich verlangsamt, aber dieser Modus funktioniert bei
jeder Hardware und jeder Softwarekonfiguration, da er das Betriebssystem 
benutzt.

@Menüposition
Sie können alle Dialogmeldungen und Submenüs entweder an der vorgesehen
Stelle plaziert haben, oder aber an der jeweiligen Mauscursorposition.
Das ersparrt unter Umständen längere Fahrwege mit der Maus.

@Menüart
Sie können die Art und Weise, wie die Hauptmenüs und Submenüs angesteuert
werden beeinflußen. Wählen Sie Pop Up Menüs springen die Untermenüs auf
wenn der Mauscursor auf die Menüleiste kommt. Bei Pull Down Menüs müßen
Sie zusätzlich die linke Maustaste betätigen und gedrückt lassen. Bei 
Doppelklick müßen Sie die Taste betätigen und wieder loslassen. Die Submenü-
auswahl wird dann durch erneuten Anklinken betätigt.

@Mausmodus
Die Benutzung dieses Programms ist sehr start Mausorientiert, da die
Maus eine wesentlich leichtere Bedienung ermöglicht. Einige wenige
Funktion sind nur durch eine Maus verfügbar. Die meistens Funktionen
sind auch durch Tastenkombinationen verfügbar. Haben Sie keine Maus
wird die Mausbedienung automatisch unterdrückt. Haben Sie eine Maus aber
Sie wollen diese nicht benutzen, können Sie diese mit der angewählten
Funktionen Mausmodus abschalten, oder auch wieder anschalten.

@Mausbedienung
Sie können die Maus für einen Rechtshänder oder für einen Linkshänder 
schalten. Bei dem Linkshandmodus werden die linke und rechte Maustaste 
vertauscht. Bedenken Sie, das die jeweils "rechte" Maustaste einer
Betätigung der Escapetaste gleichkommt.

@Warnton
Bei unerlaubten Operationen ertönt eine akkustische Warnung. Geht Ihnen
diese auf den "Wecker", können Sie diese Warnung abschalten.

@Druckertyp
Sie können zwischen zwischen der Einstellung Nadeldrucker und Laser-
drucker wählen. 
Die Einstellung Nadeldrucker steht auch für Tintenstrahldrucker (z.B.
HP Desk Jet).
Die Einstellung Laserdrucker steht für alle Laserdrucker mit HP Laser-
Jet II Emulation.

@Druckeranschluß
Wählen Sie den logischen Druckausgang für Druckausgaben. Wenn Sie sich nicht
sicher sind, wählen Sie die Option STDPRN. Damit wird der Standarddrucker
ihres Systems angesprochen.

@Initialisieren
Initialisieren
Sie können Steuersequenzen vor dem Ausdruck an Ihren Drucker senden,
um eine bestimmte Schriftart einzustellen.
Reinitialisieren
Die Zurücksetzung in den Standardmodus, nach dem Druck, erreichen Sie
mit der Steuersequenz für die Reinitialisierung.

Die Steuerzeichen müssen im ASCII-Code eingegeben werden und durch
Kommata getrennt sein (z.B. ESC n = 27, 110).

@Reinitialisieren
Initialisieren
Sie können Steuersequenzen vor dem Ausdruck an Ihren Drucker senden,
um eine bestimmte Schriftart einzustellen.
Reinitialisieren
Die Zurücksetzung in den Standardmodus, nach dem Druck, erreichen Sie
mit der Steuersequenz für die Reinitialisierung.

Die Steuerzeichen müssen im ASCII-Code eingegeben werden und durch
Kommata getrennt sein (z.B. ESC n = 27, 110).

@Linker Rand
Geben Sie die Breite des linken Druckrandes in Zeichen ein. Bei einer
Eingabe von 0 wird der Text linksbündig am Papierrand ausgedruckt,
größere Werte bewirken einen entsprechend breiten linken Rand.
Die richtige Einstellung hängt von der am Drucker eingestellten
Schriftart ab. Der realistische Wertebereich liegt zwischen 0 und 
5 Zeichen.

@Dateidruckpfad
Sie können einen Datenpfad eingeben der bei Ausgaben in eine Datei vor-
geschlagen wird. Sie ersparen sich bei gleichbleibendem Pfad, dadurch
die entsprechende Eingabe (z.B.: C:\WORD\).

Ist kein Datenpfad angegeben wird das aktuelle Programmverzeichnis ge-
wählt.

@Seitenlänge
Geben Sie die Anzahl der Zeilen pro Zeile, die Ihr Drucker bzw. Papier
schafft. Nach Ausdruck der Zeilenanzahl wird ein Seitenvorschub eingefügt.

@Fensteröffnungsmodus
Die Fenster können nach zwei Verschiedenen Verfahren aufklappen. Einmal der
normale Modus, indem das Fenster in voller Breite erscheint und dann nach 
oben und wächst. Der zweite Modus wächst erst in der Breite und dann in die
Höhe. Wählen Sie selbst aus, welches Verfahren Ihnen besser gefällt.

@Fensterverzögerung
Mittels diesem Faktor können Sie die Geschwindigkeit, mit der die Fenster
geöffnet werden beeinflußen. Dabei gilt, je kleiner der Faktor, desto 
langsamer öffnet das Fenster. Ab ca 50 hat dieser Faktor keinen Einfluß mehr.

@Dateipfad
Der Dateipfad bestimmt das aktuelle Arbeitsverzeichnis.
Alle Dateioperationen beziehen sich auf dieses Verzeichnis.

@Heimpfad
Der Heimpfad gibt an, wo die Zusatzdateien des Screenmanagers zu
finden sind. Dies gilt z.B. für die Hilfe und Fehlermeldungsdatei.
Durch Angabe dieses Pfads kann der Screenmanager in einem allgemein
zugänglichen Pfad installt werden und hat überall Zugriff auf
diese Dateien.

@Dateianhang
Der Dateianhang wird an eingebene Windownamen angehangen, und kann
beliebig gewählt werden, um eventuelle Unterscheidungen zu treffen.
Der Anhang ist wichtig bei Dateierfassen, da nur Dateien mit diesem
Anhang zur Azswahl aufgelistet werden. Bei neuen Windows wird der
aktuelle Anhang an den Namen angehängt.

@Dateierfassungsfenster
Je nach Anzahl der zu erfassenden Masken, kann die Dateierfassung mit
der Pickliste umständlich sein. Dann können Sie auf Feld umschalten,
bei dem die Dateierfassung in einem größeren Window erfolgt. 






